package com.jmb.api.core;

import com.alibaba.fastjson2.JSONObject;
import com.jmb.api.common.result.RelyType;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public interface NodeRequest {
    /**
     * 封装链路跟踪节点对象
     * @param type 类型枚举
     * @param id 对应其数据表中存储的编号 用例对应日志表；依赖对应两张依赖表，其他为null
     * @param name 名称
     * @param value 当时的value
     * @param runTime 执行耗时
     * @param expression 提取表达式
     * @return json对象
     */

    default JSONObject chainNode(@Param("type") RelyType type, @Param("id") Integer id, @Param("name") String name,
                                 @Param("value") String value, @Param("runTime") Long runTime, @Param("expression")
                                  String expression){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("type",type);
        jsonObject.put("typeDesc",type.getTypeStr());
        jsonObject.put("id",id);
        jsonObject.put("name",name);
        jsonObject.put("value",value);
        jsonObject.put("time",runTime);
        jsonObject.put("desc",type.getDesc());
        jsonObject.put("expression",expression);
        jsonObject.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS")));
        return jsonObject;
    }
}
